grammar simplexml;

/////////////////////////
//   ANALISIS LEXICO   //
/////////////////////////

SEPARADORES 	: (' '|'\n') {skip();} ;
//CAD_VACIA		:''{$}	;

DIGITO			:('0'..'9')+;
LETRAS			:('A'..'Z'|'a'..'z')*;
ABRE_CORCHETE 		: '[';
CIERRA_CORCHETE		: ']';
ABRE_PARENTESIS 	: '(';
CIERRA_PARENTESIS 	: ')';
ASIGNACION_VALOR	: ':';
ASIGNACION_ATRIBUTO 	: '=';
JERARQUIA 		: '	';
CARACTERES_ESP 		: ('@'|'#'|'$'|'%'|'?'|'¿'|'¡'|'!');
INICIO_COMENTARIO 	: '//';
COMA			: ',';
///////////////////////////
//  ANALISIS SINTACTICO  //
///////////////////////////

//simplexml	: '[' raiz cuerpo ']'	;
//cuerpo		: etiquetas|'	';
//etiquetas 	: et1|et4|et2;//|et3;
//et1		: elemento cuerpo;
//et2		: elemento.'('.atributos.')'.cuerpo;
//et3		: elemento '(' atributos ')' ASIGNACION_VALOR valor cuerpo;
//et4		: elemento ASIGNACION_VALOR valor cuerpo;

//comentario	: '//'(LETRAS |CARACTERES_ESP|'['|']'|'{'|'}'|'='|'/'|DIGITO)*;
//elemento 	: LETRAS (LETRAS | DIGITO)*;
//atributo 	: LETRAS (LETRAS | DIGITO)*;
//atributos 	: atributo ASIGNACION_ATRIBUTO valor_atributo mas_Atrib	;
//mas_Atrib 	: COMA atributos |'	';
//raiz 		: LETRAS (LETRAS | DIGITO)*;
//vaux		:(LETRAS|DIGITO)*;
//v2		:(DIGITO|LETRAS)+;
//valor_atributo 	: v2 vaux;
//valor		: v2 vaux;


/*

raiz : CORCHETE_A elemento exp+ CORCHETE_C;
exp : (etiqueta1|etiqueta2|etiqueta3|etiqueta4);


*/

